﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.IO;

using DevExpress.XtraPdfViewer;
using DevExpress.XtraGrid.Columns;  

namespace QLNSClient
{
    public partial class Frm_CBPCKN : DevExpress.XtraEditors.XtraForm
    {
        QLNSServiceReference.QLNSServiceClient sv = new QLNSServiceReference.QLNSServiceClient();

        public static Byte[] ReadImageFromFile(string ImagePath)
        {
            Byte[] ImageData = null;  //khai bao mang ImageData kieu byte luu tru anh
            FileInfo fi = new FileInfo(ImagePath); //      khai bao bien fi kieu FileInfo de doc thong tin ImagePath
            long NumberOfBytes = fi.Length; // khai bao bien NumberOfBytes kieu Long de luu do dai cua bien fi
            FileStream fs = new FileStream(ImagePath, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fs);         // bien br doc bien fs
            ImageData = br.ReadBytes((int)NumberOfBytes);
            return ImageData;
        }

                
        public Frm_CBPCKN()
        {
            InitializeComponent();
        }

        public void LoadData()
        {
            btn_Them.Enabled = false;
            btn_Luu.Enabled = true;
            btn_Xoa.Enabled = false;
            btn_Sua.Enabled = false;
            btn_Huy.Enabled = false;

            
            lke_MaCB.Enabled = false;
            lke_ChucvuKN.Enabled = true;
            lke_DonviBonhiem.Enabled = true;
            txt_Quyetdinh.Enabled = true;
            de_Ngayky.Enabled = true;
            buttonEditFileQD.Enabled = true;

            gv_dsCBCVKN.DataSource = sv.getCBPCKN();

            lke_MaCB.EditValue = FrmMain.sendMa_CB_CBKN;

            gridView1.Columns[0].Caption = "Mã cán bộ";
            gridView1.Columns[1].Caption = "Mã chức vụ";
            gridView1.Columns[2].Caption = "Mã đơn vị";
            gridView1.Columns[3].Caption = "Quyết định số";
            gridView1.Columns[4].Caption = "Ngày ký";
            gridView1.Columns[5].Visible = false;
            gridView1.Columns[6].Visible = false;

            
            lke_MaCB.Properties.DataSource = sv.getCB();
            lke_ChucvuKN.Properties.DataSource = sv.getPCKN();
            lke_DonviBonhiem.Properties.DataSource = sv.getDMDV();



            if (gridView1.DataRowCount <= 0)
            {
                MessageBox.Show("Không có dữ liệu!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }


        private void Frm_CBPCKN_Load(object sender, EventArgs e)
        {
            LoadData();
        }

        private void btn_Them_Click(object sender, EventArgs e)
        {
            btn_Luu.Enabled = true;
            btn_Xoa.Enabled = false;
            btn_Sua.Enabled = false;
            btn_Huy.Enabled = true;

            
            lke_MaCB.Enabled = true;
            lke_ChucvuKN.Enabled = true;
            lke_DonviBonhiem.Enabled = true;
            txt_Quyetdinh.Enabled = true;
            de_Ngayky.Enabled = true;
            buttonEditFileQD.Enabled = true;

            
            //lke_MaCB.EditValue = "";
            lke_ChucvuKN.EditValue = null;
            lke_DonviBonhiem.EditValue = "";
            txt_Quyetdinh.Text = "";
            de_Ngayky.Text = "";
            buttonEditFileQD.Text = null;
        }

        private void btn_Luu_Click(object sender, EventArgs e)
        {
            btn_Huy.Enabled = false;
            //btn_Them.Enabled = true;

            string tempMaCB="";
            string tempMaCV="";
            string tempMaDV="";
            
            if (lke_MaCB.EditValue.ToString() == "")
            {
                MessageBox.Show("Bạn chưa chọn Cán bộ!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                tempMaCB = null;
                lke_MaCB.Focus();
            }
            else
            {
                tempMaCB = lke_MaCB.EditValue.ToString();
            }

            if (lke_ChucvuKN.EditValue == null)
            {
                MessageBox.Show("Bạn chưa chọn Chức vụ!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                tempMaCV = null;
                lke_ChucvuKN.Focus();
            }
            else
            {
                tempMaCV = lke_ChucvuKN.EditValue.ToString();
            }

            if (lke_DonviBonhiem.EditValue.ToString() == "")
            {
                MessageBox.Show("Bạn chưa chọn Đơn vị cần bổ nhiệm!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                lke_DonviBonhiem.Focus();
                tempMaDV = null;
            }
            else
            {
                tempMaDV = lke_DonviBonhiem.EditValue.ToString();
            }

            //====================file pdf==============================

            QLNSServiceReference.CANBO_PCKN cbpckn = new QLNSServiceReference.CANBO_PCKN();
            if (tempMaCB != null && tempMaCV != null && tempMaDV != null)
            {
                cbpckn.Ma_CB = tempMaCB;
                cbpckn.Ma_PCKN = Int32.Parse(tempMaCV.ToString());
                cbpckn.Ma_DV = tempMaDV;

                if (buttonEditFileQD.Text.Trim() != "")
                {
                    FileStream frm;
                    frm = new FileStream(@buttonEditFileQD.Text.Trim(), FileMode.Open, FileAccess.Read);
                    byte[] picbyte = new byte[frm.Length];
                    frm.Read(picbyte, 0, System.Convert.ToInt32(frm.Length));
                    frm.Close();
                    frm.Dispose();
                    cbpckn.FileQuyetDinhKN = picbyte;

                }
                else
                {
                    byte[] picbyte = new byte[0];
                    cbpckn.FileQuyetDinhKN = picbyte;

                }


                string tempQuyetDinh = txt_Quyetdinh.Text;
                DateTime tempNgayKy = de_Ngayky.DateTime;
                cbpckn.QuyetDinhKN = tempQuyetDinh;
                cbpckn.NgayKyKN = tempNgayKy;

                if (demsua == 1)
                {
                    DialogResult dr = MessageBox.Show("Bạn có chắc muốn cập nhật thông tin chức vụ kiêm nhiệm '" + lke_ChucvuKN.Text + "' của cán bộ '" + lke_MaCB.Text + "' tại đơn vị '" + lke_DonviBonhiem.Text + "'?", "CẢNH BÁO", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                    if (dr == DialogResult.OK)
                    {
                        sv.updateCBPCKN(cbpckn);
                        LoadData();
                        demsua = 0;
                        MessageBox.Show("Cập nhật thông tin kiêm nhiệm '"+lke_ChucvuKN.Text+"' tại đơn vị '"+lke_DonviBonhiem.Text+"' của cán bộ '"+lke_MaCB.Text+"' thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else
                {
                                        
                    int kq = sv.addCBPCKN(cbpckn);
                    if (kq != -1)
                    {
                        LoadData();
                        MessageBox.Show("Thêm quyết định kiêm nhiệm chức vụ '"+lke_ChucvuKN.Text+"' tại đơn vị '"+lke_DonviBonhiem.Text+"' của cán bộ '"+lke_MaCB.Text+"' thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBox.Show("Chức vụ kiêm nhiệm cho đơn vị này đã tồn tại! Vui lòng xem lại!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
        }

        private void btn_Huy_Click(object sender, EventArgs e)
        {
            demsua = 0;
            
            btn_Luu.Enabled = false;
            btn_Huy.Enabled = false;
            //btn_Them.Enabled = true;
            btn_Xoa.Enabled = false;
            btn_Sua.Enabled = false;

            lke_MaCB.Enabled = false;
            lke_ChucvuKN.Enabled = false;
            
            lke_DonviBonhiem.Enabled = false;
            txt_Quyetdinh.Enabled = false;
            de_Ngayky.Enabled = false;
            buttonEditFileQD.Enabled = false;
        }


        int demsua = 0;
        private void btn_Sua_Click(object sender, EventArgs e)
        {
            if (gridView1.DataRowCount > 0)
            {
                demsua = 1;

                btn_Luu.Enabled = true;
                btn_Them.Enabled = false;
                btn_Huy.Enabled = true;
                btn_Sua.Enabled = false;

                txt_Quyetdinh.Enabled = true;
                de_Ngayky.Enabled = true;
                buttonEditFileQD.Enabled = true;
            }
            else
            {
                MessageBox.Show("Không có dữ liệu để sửa!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void btn_Xoa_Click(object sender, EventArgs e)
        {
            //btn_Them.Enabled = true;
            btn_Luu.Enabled = false;
            if (gridView1.DataRowCount > 0)
            {
                DialogResult dr = MessageBox.Show("Bạn có chắc muốn hủy chức vụ kiêm nhiệm '" + lke_ChucvuKN.Text + "' của cán bộ '" + lke_MaCB.Text + "' tại đơn vị '" + lke_DonviBonhiem.Text + "'", "CẢNH BÁO", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                if (dr == DialogResult.OK)
                {
                    sv.deleteCBPCKN(macb, macv, madv);
                    LoadData();
                    MessageBox.Show("Hủy kiêm nhiệm thành công!");
                }
            }
            else
            {
                MessageBox.Show("Không có dữ liệu để xóa!","Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }


        string macb;
        int macv;
        string madv;
       

        private void lke_dmDonvi_EditValueChanged(object sender, EventArgs e)
        {
            //string a = lke_dmDonvi.EditValue.ToString();
            //lke_MaCB.Properties.DataSource = sv.getCBtheoDV(a);
        }


        //string tempPath;
        
        private void btn_themAnh_Click(object sender, EventArgs e)
        {
            
        }

        private void buttonEditFileQD_EditValueChanged(object sender, EventArgs e)
        {

        }

        
        private void buttonEditFileQD_Click(object sender, EventArgs e)
        {
            
        }

        XtraFormPdfViewer fqd;
        private void buttonEditFileQD_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            try
            {
             
                FileDialog fdg = new OpenFileDialog();
                fdg.InitialDirectory = @"d:\";
                fdg.Filter = "File PDF(*.pdf)|*pdf";
                if (fdg.ShowDialog() == DialogResult.OK)
                {
             
                    buttonEditFileQD.Text = fdg.FileName;
                    if (fqd == null || fqd.IsDisposed)
                    {
                        fqd = new XtraFormPdfViewer(fdg.FileName);
                        fqd.Show();
                    }
                    else
                        fqd.Activate();
                }
                fdg = null;
            }
            catch (Exception ex)
            {
             
                MessageBox.Show(ex.Message);
            }
        }


     
        private void lke_ChucvuKN_EditValueChanged(object sender, EventArgs e)
        {
            int  a = Int32.Parse(lke_ChucvuKN.EditValue.ToString());
            lke_DonviBonhiem.Properties.DataSource = sv.getDVtheoPCKN(a);
        }

        private void gv_dsCBCVKN_Click(object sender, EventArgs e)
        {
            btn_Luu.Enabled = false;
            btn_Xoa.Enabled = true;
            btn_Sua.Enabled = true;
            btn_Huy.Enabled = false;
            //btn_Them.Enabled = true;

            
            lke_MaCB.Enabled = false;
            lke_ChucvuKN.Enabled = false;
            lke_DonviBonhiem.Enabled = false;
            txt_Quyetdinh.Enabled = false;
            de_Ngayky.Enabled = false;
            buttonEditFileQD.Enabled = false;

            try
            {
                lke_MaCB.EditValue = gridView1.GetFocusedRowCellDisplayText(gridView1.Columns[0]);
                lke_ChucvuKN.EditValue = Int32.Parse(gridView1.GetFocusedRowCellDisplayText(gridView1.Columns[1]));
                lke_DonviBonhiem.EditValue = gridView1.GetFocusedRowCellDisplayText(gridView1.Columns[2]);
                txt_Quyetdinh.Text = gridView1.GetFocusedRowCellDisplayText(gridView1.Columns[3]);
                de_Ngayky.DateTime = DateTime.Parse(gridView1.GetFocusedRowCellDisplayText(gridView1.Columns[4]));

                macb = gridView1.GetFocusedRowCellDisplayText(gridView1.Columns[0]);
                macv = Int32.Parse(gridView1.GetFocusedRowCellDisplayText(gridView1.Columns[1]));
                madv = gridView1.GetFocusedRowCellDisplayText(gridView1.Columns[2]);
                // lay ma dmdv de hien thi ten
                //List<QLNSServiceReference.DANHMUC_DONVI> listTenDVtheoMaCB = new List<QLNSServiceReference.DANHMUC_DONVI>(sv.getTenDVtheoMaCB(macb));
                //string a = listTenDVtheoMaCB[0].Ma_DV;
                //lke_dmDonvi.EditValue = a;
            }
            catch { }

        }

        private void gv_dsCBCVKN_DoubleClick(object sender, EventArgs e)
        {

        }


        XtraFormPdfViewer frmpdf;
    
        private void gridView1_DoubleClick(object sender, EventArgs e)
        {
            if (gridView1.DataRowCount > 0)
            {
                if ((byte[])gridView1.GetFocusedRowCellValue(gridView1.Columns[5]) != null && ((byte[])gridView1.GetFocusedRowCellValue(gridView1.Columns[5])).Length != 8000)
                    if (frmpdf == null || frmpdf.IsDisposed)
                    {

                        byte[] pdfbyte = (byte[])gridView1.GetFocusedRowCellValue(gridView1.Columns[5]);
                        //MessageBox.Show(pdfbyte.Length.ToString());
                        if (pdfbyte.Length != 0)
                        {
                            frmpdf = new XtraFormPdfViewer(pdfbyte);
                            frmpdf.Show();
                        }
                        else
                        {
                            frmpdf.Activate();
                        }
                    }
            }
        }

      
       
      
    }
}